#!/bin/bash
#

if [[ ! -z $1 ]];then
        num=$1
else
        num=50
fi

if [[ ! -z $2 ]];then
        time=$2
else
        time=1
fi

function check(){
        iplist=`netstat -an |grep ^tcp.*:80|egrep -v 'LISTEN|127.0.0.1'|awk -F"[ ]+|[:]" '{print $6}'|sort|uniq -c|sort -rn|awk -v str=$num '{if ($1>str){print $2}}'`
        if [[ ! -z $iplist ]];then
                for i in $iplist
                do
                        echo "--------------"
                        echo $i
                        #iptables -I INPUT -p tcp -s $i --dport 80 -j DROP
                        ipwl=`grep -w $i white_ip.txt`
                        if [[ ! -z $ipwl ]];then
                                echo "$i 在白名单中 不做处理..."
                                echo "$i in whiteip. please not doit ..."
                        else
                                echo "$i 不在白名单中，请处理..."
                                echo "$i not in whiteip. please doit ..."
                                #echo "$i 在不在黑名单中，不在黑名单中dd请处理，在黑名单中，说明已经处理过了"
                                #echo "添加到监时的文本中..."
                                #echo "并在iptables 添加好"
                                #iptables -I INPUT -p tcp -s $i --dport 80 -j DROP
                                ipbl=`grep -w $i black_ip.txt`
                                #请注下面的判断语句
                                #也可以通过iptable -L -n |grep $i来匹配
                                if [[ -z $ipbl ]];then
                                        echo "$i 不在黑名单中。请处理..."
                                        echo "$i not in blackip. please doit ..."
                                        iptables -I INPUT -p tcp -s $i --dport 80 -j DROP
                                        echo $i >> black_ip.txt
                                else
                                        echo "$i 在黑名单中...不做处理"
                                        echo "$i in blackip. please not doit ..."
                                fi
                        fi
                done
        fi
}


#echo "开始执行 ..."
echo "begin ..."
while true
do
        echo "begin check ..."
        check
        sleep $time
done

